﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using _InformaticaIndustrial_DerivdosVinicos.DTO;
using Dao;

namespace _InformaticaIndustrial_DerivdosVinicos.Interfaz
{
	public partial class BMRuta : Form
	{
		#region Property

		private IPRutaFabricacion ipRuta = new IPRutaFabricacion();

		#endregion Property

		#region Events

		public BMRuta()
		{
			InitializeComponent();
			LoadDGV();
		}

		private void btBuscar_Click(object sender, EventArgs e)
		{
			LoadDGV();
		}

		private void brSalir_Click(object sender, EventArgs e)
		{
			this.Close();
		}

		private void dgvRutas_CellContentClick(object sender, DataGridViewCellEventArgs e)
		{
			try
			{
				int id;

				switch (e.ColumnIndex)
				{
					case 0:
						id = Convert.ToInt32(dgvRutas.Rows[e.RowIndex].Cells["Id"].Value);
						new ABMRuta(id).ShowDialog();
						LoadDGV();
						break;
					case 1:
						id = Convert.ToInt32(dgvRutas.Rows[e.RowIndex].Cells["Id"].Value);
						ipRuta.Delete(id);
						IPRutaFabricacion.confirmarCambios();
						MessageBox.Show("Ruta eliminada");
						LoadDGV();
						break;
					default:
						break;
				}
			}
			catch (Exception)
			{
				string accion = (e.ColumnIndex == 0 ? "modificar" : "eliminar");

				MessageBox.Show("No se puede " + accion + " la ruta");
			}
		}

		#endregion Events

		#region Methods

		private void LoadDGV()
		{
			dgvRutas.DataSource = GetDTOs();
		}

		private IList<DTORuta> GetDTOs()
		{
			IList<RutaFabricacion> rutas = ipRuta.getByCriterio<RutaFabricacion>("", "", txtBuscar.Text.Trim());
			IList<DTORuta> dtos = new List<DTORuta>();
			DTORuta dto;

			foreach (var item in rutas)
			{
				dto = new DTORuta
				{
					Id = item.IdRF,
					NombreProducto = item.Producto.NombreProducto
				};

				dtos.Add(dto);
			}

			return dtos;
		}

		#endregion Methods
	}
}
